/**
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved. <br/>
 * 描述: TODO <br/>
 *
 * @author framework generator
 * @date 2022年02月15日
 * @version 2.0
 */
package com.icinfo.cloud.provider.punish.ucase.casemain.mapper;

import com.icinfo.cloud.provider.punish.api.dto.*;
import com.icinfo.cloud.provider.punish.api.vo.*;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.*;
import com.icinfo.cloud.provider.punish.ucase.casemain.model.CaseMainInfo;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.*;
import com.icinfo.cloud.provider.punish.ucase.caseregister.dto.CaseMainReasonRepeatPageRequest;
import com.icinfo.cloud.provider.punish.ucase.caseregister.dto.CaseRepeatPageRequest;
import com.icinfo.cloud.provider.punish.ucase.caseregister.dto.CaseRepeatQueryDto;
import com.icinfo.cloud.provider.punish.ucase.caseregister.vo.CaseMainReasonRepeatVo;
import com.icinfo.cloud.provider.punish.uniquery.dto.UniQueryDto;
import com.icinfo.cloud.provider.punish.uniquery.vo.UniQueryWorkTaskColorsRetVo;
import com.icinfo.cloud.provider.punish.uniquery.vo.UniQueryWorkTaskVo;
import com.icinfo.framework.mybatis.mapper.common.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 描述: 案件主表-trj case_main_info 对应的Mapper接口.<br>
 *
 * @author framework generator
 * @date 2022年02月15日
 */
public interface CaseMainInfoMapper extends Mapper<CaseMainInfo> {

    /**
     * 【V1.0.0】描述：工作台--代办任务列表+全部任务
     * @author lxj
     * @date  2022/2/18
     * @param  caseDto 入参
     * @return List<TaskVo>
     **/
    List<TaskVo> getApproveTaskList(CaseQueryDto caseDto);

    /**
     * 【V1.6.0】描述：办结案件-优化版
     * @author tianrunjia
     * @date  2022/11/01
     * @param  caseDto 入参
     * @return List<TaskVo>
     **/
    List<AllFinishCaseInfoVo> selectAllFinishCaseInfoList(CaseQueryDto caseDto);

    /**
     * 【V1.6.0】描述：工作台--代办任务列表+全部任务
     * @author tianrunjia
     * @date  2022/11/01
     * @param  caseDto 入参
     * @return List<TaskVo>
     **/
    List<AllCaseInfoListVo> selectAllCaseInfokList(CaseQueryDto caseDto);

    /**
     * 【V1.0.0】描述：颜色统计
     * @author lxj
     * @date  2022/2/22
     * @param  caseDto 入参
     * @return List<TaskVo>
     **/
    Integer getColorStatistics(CaseQueryDto caseDto);

    /**
     * 根据办案人员id获取案件个数
     * @author lxj
     * @date  2022/3/1
     * @param  userId  办案人id
     * @param  status  案件状态
     * @return Integer
     **/
    int getCaseAmountByStatusAndUser(@Param(value = "status") String status, @Param(value = "userId")  String userId);


    /**
     * 【V1.0.0】描述：根据案件id查询案件主要信息
     *
     * @param caseId 案件id
     * @return {@link com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseMainInfoVo} 案件主要信息
     * @author xiangyuyu
     * @date 2022-03-31 10:31
     */

    com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseMainInfoVo selectCaseMainInfo(@Param("caseId") String caseId);

    /**
     * 【V1.0.0】描述：获取截止日期不足7天的案件
     *
     * @return {@link com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseMainInfoVo} 案件主要信息
     * @author lxj
     * @date 2022-04-28 10:31
     */
    List<Map<String,String>> selectSevExpireCase();

    /**
     * 描述：查询办案人员的案件列表
     *
     * @param pageQueryDto 页面查询dto
     * @return {@link List<CaseInfoShareVo> }
     * @author shishengyao
     * @date 2022/07/18
     */
    List<CaseInfoShareVo> selectCaseInfoByHandlePersonIdList(CaseInfoSharePageQueryDto pageQueryDto);

    /**
     * 根据案由编码及当事人获取N年内重复违法次数
     * @param queryDto
     * @return
     */
    int selectCaseRepeatCountByReasonAndParty(CaseRepeatQueryDto queryDto);

    /**
     * 描述： 根据案由编码及当事人获取N年内重复违法列表
     *
     * @author: zhengqiang
     * @date: 2022/7/21
     * @param: pageRequest
     * @return {@link List< CaseMainReasonRepeatVo>}
     **/
    List<CaseMainReasonRepeatVo> selectCaseRepeatListByReasonAndParty(CaseMainReasonRepeatPageRequest pageRequest);
    /**
     * 描述： 根据案由编码列表及当事人证件号列表获取N年内重复违法列表
     *
     * @author: zhengqiang
     * @date: 2022/7/21
     * @param: pageRequest
     * @return {@link List< CaseMainReasonRepeatVo>}
     **/
    List<CaseMainReasonRepeatVo> selectCaseRepeatListByReasonAndParties(CaseRepeatPageRequest pageRequest);

    /**
     * 描述： 根据承办人查询案件记录
     *
     * @author: zhengqiang
     * @date: 2022/9/7
     * @return {@link List<  CaseInfoRecordVo >}
     **/
    List<CaseInfoRecordVo> selectCaseInfoListByUser(CaseInfoRecordPageQueryDto pageQueryDto);

    /**
     * 描述： 工作台--任务列表(新)
     *
     * @author: zhengqiang
     * @date: 2022/10/12
     * @param: caseDto
     * @return {@link List< TaskVo>}
     **/
    List<TaskVo> getApproveTaskListNew(CaseQueryDto caseDto);

    /**
     * 描述： 各阶段案件查询列表(新)
     *
     * @author: zhengqiang
     * @date: 2023/5/26
     * @param: caseDto
     * @return {@link List< TaskVo>}
     **/
    List<TaskVo> getStageCaseListNew(CaseQueryDto caseDto);

    /**
     * 描述： 颜色统计(新)
     *
     * @author: zhengqiang
     * @date: 2022/10/12
     * @param: caseDto
     * @return {@link Integer}
     **/
    Integer getColorStatisticsNew(CaseQueryDto caseDto);

    /**
     * 描述： 全部待办列表(新)
     *
     * @author: zhengqiang
     * @date: 2022/10/12
     * @param: caseDto
     * @return {@link List< TaskVo>}
     **/
    List<TaskVo> getTodoTaskList(CaseQueryDto caseDto);

    /**
     * 描述： 全部待办列表颜色统计(新)
     *
     * @author: zhengqiang
     * @date: 2022/10/12
     * @param: caseDto
     * @return {@link Integer}
     **/
    Integer getTodoTaskColorStatistics(CaseQueryDto caseDto);

    /**
     * 描述： 根据案件id获取分当事人案件详情
     *
     * @author: zhengqiang
     * @date: 2022/10/19
     * @param: caseId
     * @return {@link List<  PartiesCaseInfoOfExtVo >}
     **/
    List<PartiesCaseInfoOfExtVo> selectPartiesCaseInfoByCaseIdOfExt(String caseId);

    /**
     * 描述： 根据办案人员获取办案中的案件记录(分页) (联合会商、争议裁决调用)
     *
     * @author: zhengqiang
     * @date: 2022/10/19
     * @param: pageQueryDto
     * @return {@link List< CaseInfoRecordOfExtVo>}
     **/
    List<CaseInfoRecordOfExtVo> selectCaseInfoRecordByUserOfExt(CaseInfoRecordPageQueryOfExtDto pageQueryDto);

    /**
     * 描述： 根据案件id获取案件记录 (联合会商、争议裁决调用)
     *
     * @author: zhengqiang
     * @date: 2022/10/19
     * @param: caseId
     * @return {@link CaseInfoRecordOfExtVo}
     **/
    CaseInfoRecordOfExtVo selectCaseInfoRecordByCaseIdOfExt(String caseId);

    /**
     * 描述： 根据主体身份证或代码社会信用代码查询处罚记录(分页) (信息协助)
     *
     * @author: zhengqiang
     * @date: 2022/10/19
     * @param: pageQueryDto
     * @return {@link List< PartiesPunishRecordOfExtVo>}
     **/
    List<PartiesPunishRecordOfExtVo> selectPartiesPunishRecordByIdCodeOfExt(PartiesPunishRecordPageQueryOfExtDto pageQueryDto);

    /**
     * 大屏-行政处罚分页列表查询
     * @return
     */
    List<CaseActsCodeBigScreenListVo> queryCaseActsCodeBigScreenPage(@Param("caseActsCode") String caseActsCode, @Param("isConnect") String isConnect);
    /**
     * 查询待督查任务列表(查询办案中的案件)
     * @param: queryDto
     * @return: List<WaitingSupervisedTaskVo>
     * @Author: wuzhihui
     * @Date: 2022/12/01
     */
    List<WaitingSupervisedTaskVo> getWaitingSupervisedTask(WaitingSupervisedTaskQueryDto queryDto);
    /**
     * 查询待督查任务列表(查询办案中的案件)
     * @param: queryDto
     * @return: List<WaitingSupervisedTaskVo>
     * @Author: wuzhihui
     * @Date: 2022/12/01
     */
    List<WaitingSupervisedTaskDetailVo> getWaitingSupervisedTaskInfo(@Param("caseId") String caseId);

    /**
     * 查询行政机构负责人id
     * @param: [caseOrgCode]
     * @return: java.util.HashSet<java.lang.String>
     * @Author: wuzhihui
     * @Date: 2022/12/02
     */
    List<String> getXzjgfzrUserIdList(@Param("caseOrgCode")String caseOrgCode);

    /**
     * 案件文书信息
     * @param casePartiesAndLegalRecordDtoList
     * @return
     */
    List<CaseDocumentRecordZlbVo> selectcaseAndDocument(@Param("list") List<CasePartiesAndLegalRecordDto> casePartiesAndLegalRecordDtoList
            , @Param("type") String type);

    /**
     * 描述： 办案协同-统一两法衔接查询-我的移送
     *
     * @author: yehuafei
     * @date: 2022/11/29
     **/
    List<CaseTransferPageResponse> selectCaseTransferList(CaseTransferPageRequest request);

    /**
     * 描述：统一案件分页查询列表
     * @author yehuafei
     * @date 2022-12-05
     */
    List<CaseInfoPageResponse> selectCaseInfoList(CaseInfoPageRequest request);

    /**
     * 描述：统一案件详情
     * @author yehuafei
     * @date 2022-12-05
     */
    CaseInfoDetailResponse getCaseInfoDetailById(@Param("id") String id);

    /**
     * 描述：统一案件详情  处罚过程-立案信息
     * @author yehuafei
     * @date 2022-12-05
     */
    CaseInfoDetailLAXX getCaseInfoDetailLAXX(@Param("id") String id);

    /**
     * 描述：统一案件详情  处罚过程-处罚告知
     * @author yehuafei
     * @date 2022-12-05
     */
    CaseInfoDetailCFGZ getCaseInfoDetailCFGZ(@Param("id") String id);

    /**
     * 描述：统一案件详情  处罚过程-处罚决定
     * @author yehuafei
     * @date 2022-12-05
     */
    CaseInfoDetailCFJD getCaseInfoDetailCFJD(String id);

    /**
     * 描述：统一案件详情  处罚过程-处罚执行
     * @author yehuafei
     * @date 2022-12-05
     */
    CaseInfoDetailCFZX getCaseInfoDetailCFZX(String id);

    /**
     * 描述：统一案件详情  处罚过程-结案信息
     * @author yehuafei
     * @date 2022-12-05
     */
    CaseInfoDetailJAXX getCaseInfoDetailJAXX(String id);

    /**
     * 描述：统一案件详情  处罚过程-结案信息
     * @author yehuafei
     * @date 2022-12-05
     */
    CaseInfoDetailGSXX getCaseInfoDetailGSXX(String id);

    /**
     * 描述：统一案件详情 历史行政处罚记录
     * @author yehuafei
     * @date 2022-12-05
     */
    List<CaseInformHisXZCFRecord> getCaseInformHisXZCFRecord(@Param("partyId") String partyId);

    /**
     * 根据处罚决定书文号获取地址
     * @param punishDocumentNum
     * @return
     */
    String getXzcfJDSUrl(@Param("punishDocumentNum") String punishDocumentNum);

    /**
     * 获取执法人员名称
     * @param caseId
     * @return
     */
    String getZfPeopleName(@Param("caseId") String caseId);

    /**
     * 【V1.0.0】描述：根据案件id获取加处罚款决定书填充信息
     *
     * @param caseId 案件id
     * @author yehuafei
     * @date 2022-12-13 09:33
     */
    JCFKJDSDocData getJCFKJDSDocData(@Param("caseId") String caseId,@Param("partyId") String partyId,@Param("handleType") String handleType);

    /**
     * 查询关联案件列表
     * @param orgCode 机构编码
     * @param queryName 案件名称查询字段
     * @return
     * @author lilihao
     * @date 2022/12/4 21:40
     */
    List<CaseInfoQueryVo> getRelCaseList(@Param("orgCode") String orgCode,
                                         @Param("queryName") String queryName);

    /**
     * 根据数据组 punish_case_code查询处罚系统是否存在对应数据
     * @param punishCaseCode
     * @return
     */
    String getCFCaseIdByPunishCaseCode(@Param("punishCaseCode") String punishCaseCode);

    List<CaseInfoPageResponseStatistics> getCaseInfoStatistics(CaseInfoPageRequest caseInfoPageRequest);

    /**
     * 描述：统一案件颜色查询统计
     * @author yehuafei
     * @date 2022-12-05
     */
    Integer getCaseInfoPageColorStatisticsRed(CaseInfoPageRequest caseInfoPageRequest);
    Integer getCaseInfoPageColorStatisticsYellow(CaseInfoPageRequest caseInfoPageRequest);
    Integer getCaseInfoPageColorStatisticsBlue(CaseInfoPageRequest caseInfoPageRequest);

    /**
     * 根据类型编码获取案件移送案源字典
     * @param typeCode
     * @return
     */
    List<LawEnDic> getCaseTransferDicByType(@Param("typeCode") String typeCode);



    /** ===================================== 查询 START ================================================ */

    /**
     * 【V1.11.1】描述： 工作台--待办任务
     *
     * @author: tianrunjia
     * @date: 2023-03-06
     **/
    List<UniQueryWorkTaskVo> selectWorkWaitTaskList(UniQueryDto uniQueryDto);

    /**
     * 【V1.11.1】描述： 工作台--待办任务颜色
     *
     * @author: tianrunjia
     * @date: 2023-03-06
     **/
    List<UniQueryWorkTaskColorsRetVo> selectWorkWaitTaskListColors(UniQueryDto uniQueryDto);

    /** ===================================== 查询 END ================================================ */


    /**
     * 外部案件信息列表查询
     * @param queryOfExtDto
     * @return
     */
    List<AllCaseInfoOfExtVo> selectAllCaseInfoListOfExt(AllCaseInfoQueryOfExtDto queryOfExtDto);

    /**
     * 执行更新操作
     * @author liyafeng
     * @date 2023/4/12
     * @param updateSql
     * @return
     */
    void executeUpdateSql(@Param("updateSql") String updateSql);

    /**
     * 查询案件信息(成品油)
     *
     * @param queryDto
     * @return
     */
    List<CaseInfoPageListForOilVo> selectCaseInfoPageListForOilManage(CaseInfoPageListForOilQueryDto queryDto);

    /**
     * 查询案件名称及编号列表(成品油)
     *
     * @param queryDto
     * @return
     */
    List<CaseNameAndNoListForOilVo> selectCaseNameAndNoListForOilManage(CaseNameAndNoListForOilQueryDto queryDto);

    /**
     * 根据案件id获取涉刑移送记录
     * @param caseId
     * @return
     */
    List<String> selectCriminalTransferCaseSuccessList(@Param("caseId") String caseId);
}
